/*
 * VentanaLogeados.java
 *
 * Created on 22 de febrero de 2007, 20:02
 */

package Vista;

import Controlador.ControladorVentanaPrincipal;
import Modelo.Asistencia;
import Modelo.Investigador;
import java.sql.SQLException;
import java.util.LinkedList;
import javax.swing.table.DefaultTableModel;
import javax.swing.JOptionPane;
import javax.swing.JTable;
/**
 *
 * @author  PC
 */
public class VentanaLogeados extends javax.swing.JFrame {
    
    /** Creates new form VentanaLogeados */
    public VentanaLogeados() {
        initTableModel();
        initComponents();
        jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setTitle("Investigadores Logueados");
        jPanel1.setLayout(new java.awt.BorderLayout());

        getContentPane().add(jPanel1, java.awt.BorderLayout.WEST);

        jButton1.setText("Dar Baja");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(5, 5, 5)
                .addComponent(jButton1))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(5, 5, 5)
                .addComponent(jButton1))
        );
        getContentPane().add(jPanel2, java.awt.BorderLayout.EAST);

        jScrollPane1.setPreferredSize(new java.awt.Dimension(320, 250));
        jTable1.setModel(getModel());
        jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);
        jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTable1MouseClicked(evt);
            }
        });

        jScrollPane1.setViewportView(jTable1);

        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        if(borrarFilaSeleccion());
        else 
          JOptionPane.showMessageDialog(null, "Debe seleccionar un investigador.", "No se puede eliminar", JOptionPane.ERROR_MESSAGE);   
        
    }//GEN-LAST:event_jButton1ActionPerformed

    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseClicked
         
    }//GEN-LAST:event_jTable1MouseClicked
    
    /**
     * @param args the command line arguments
     */
    public DefaultTableModel getModel(){
        return this.dtm;
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration//GEN-END:variables
    private DefaultTableModel dtm;
        
   
    public void initTableModel(){
        dtm = new DefaultTableModel();
        LinkedList listaAsistencias = null;
        try{
            //listaInv = Investigador.getInvestigadoresLogeados();
            listaAsistencias = Asistencia.getAsistenciasPendientes();
        }catch(SQLException e ){
            JOptionPane.showMessageDialog(null, "Error al cargar los investigadores logueados.\nReporte el problema.", "Error", JOptionPane.ERROR_MESSAGE);   
        }
        
        dtm.addColumn("Nombre");
        dtm.addColumn("Apellido");
        dtm.addColumn("Dni");
        dtm.addColumn("Hora Entrada");
        if(listaAsistencias == null)
            return;
        for(int i = 0; i < listaAsistencias.size(); i++){
            Asistencia a = (Asistencia)listaAsistencias.get(i);
            Investigador inv = a.getInvestigador( );
            inv.setAsistencia(a);
            dtm.addRow(getFila(inv));
        }
        //listaInv.clear(); demora tiempo al vicio
    }
    
    public void insertarFila(Investigador inv){
        this.dtm.addRow(getFila(inv));
    }
    
    //le paso un ivestigador y me devuelve un arreglo de 4 campos, con los datos de la fila
    //lista para insertar
    private Object[] getFila(Investigador inv ){
        Object[] datos = new Object[4];
        datos[0] =  inv.getNombre();
        datos[1] =  inv.getApellido();
        datos[2] =  inv.getDni();
        datos[3] =  ControladorVentanaPrincipal.getHora(inv.getHoraEntrada());
        return datos;
    }
    
    //en base al dni parametro, se borra la fila que lo contenga
    public void borrarFilaXDni(String dni){
        for(int i = 0; i < dtm.getRowCount(); i++){
            //compara el dni con cada campo de dni
            if(dni.compareTo( (String) dtm.getValueAt(i, 2) ) == 0){
                this.dtm.removeRow(i);
                return;
            }
        }
    }
    //se borra la fila seleccionada actualmente
    public boolean borrarFilaSeleccion(){
        if(jTable1.getSelectedRow() != -1) {
            try{
                Investigador inv = new Investigador( (String) dtm.getValueAt( jTable1.getSelectedRow(), 2 ));
                
                this.dtm.removeRow(jTable1.getSelectedRow());
                inv.registrarMovimiento();
            }catch(SQLException e){
                JOptionPane.showMessageDialog(null, "Error al borrar el investigador.", "No se puede eliminar", JOptionPane.ERROR_MESSAGE);   
                return false;
            }
            return true;
        }
        return false;
    }
    
    
    
}

